
.======================================================.
| Grasshopper-Tekla Structures Link v1.5 Release Notes |
:======================================================:

 >>> Note: After updating, existing Grasshopper definitions might generate some warnings when they are opened.
           These can be ignored and should stop showing up after you've re-saved the definition.


 New Components
 ==============

    * New Parameters for referencing Construction objects (Points, Lines, Arcs [2019+ only], Circles, Polylines
      [2019+ only] and Planes) from Tekla Structures.
        - The referenced geometry will automatically be converted to corresponding Rhino geometry when plugged
          into standard Grasshopper components.

    * New component "Tekla Line" for picking a line by two points in Tekla Structures.
        - The line will be visualized in Rhino as well as Tekla Structures.

    * New Component "Get All UDAs" to extract all the User-defined attributes from any model object.

    * New component "Set UDAs" to set User-defined attributes for any model object.
	- To easily remove any UDA, use the 'Construct UDA' component and set the value of the constructed UDA(s)
          to an empty string, then connect the output to the "Set UDAs" component.


 Enhanced Components
 ===================

    * Curved or Circular bar group types can now be created with the 'Create Rebar Group' component.
        - this will happen automatically if the shape input is a single arc or circle.

    * Spiral type stirrups are supported.
	- The 'Group Attributes' component has a new input called 'Spiral' for enabling spiral stirrups.
        - Can be used with both normal and circular bar groups.

    * Grid labels can be set when creating a grid with the 'Grid' component.

    * You can now check attributes, child objects and required inputs of referenced Tekla components/plugins
      using the 'Deconstruct Component' component.
        - The input information can be useful when trying to determine the correct input sequence for inserting a
          complicated Tekla component (plugin) from Grasshopper.

    * The 'Create Shape' component can replace any existing shape that uses the same geometry.
        - This might be needed since in recent Tekla versions, you can't have two different shapes with identical
          geometry in the Shape catalog.
        - To enable this, set the new right-click option "Replace similar shapes" to 'true' for the 'Create
          Shape' component.
        - If there are existing items using the shape that is being replaced, they will be modified to use the
          new shape name instead.

    * Position for created parts can be entered as text (from e.g. a panels) into the 'Position' input.
        - The basic syntax is PLANE_ENUM(PLANE_OFFSET), ROTATION_ENUM(ROTATION_OFFSET), DEPTH_ENUM(DEPTH_OFFSET)
        - The offsets are optional. See the input tooltip for syntax examples.

    * The max number of control points for e.g. plates or polybeams will be indicated under the component, if
      it's set to anything other than default.
        - The change in number is possible to undo with the Undo command.

    * The 'Beam Angle' component is renamed 'Beam Rotation'.


 Changed behavior
 ================

    * Part Attributes (Name, Profile, Material, Finish, Class, Phase, UDA) are not reset by GH any more if they
      have been manually edited in Tekla, unless they have a value plugged in.
        - As previously, Position attributes will not be updated from GH, unless there's a Position component
          connected to the Position input of the part generating component. In that case all of the position 
          attributes will come from the Position component. Numbering and Deforming attributes work mainly the 
          same way as Position.


 Bugfixes
 ========

    * Under some circumstances, components might lose the connection to the generated objects in Tekla and start
      creating duplicated ones.
        - If the Tekla model was changed without restarting Rhino, the next time you opened the script
          connections might be lost. This has been fixed.
        - If the connection to the Tekla API was lost for some reason, you could sometimes still reference
          objects into Grasshopper, but their GUIDs couldn't be queried and stored. Now there's a warning in the
          balloon tip if this happens, nudging you to restart Rhino to re-establish the API connection.

    * Some Tekla components couldn't be correctly selected in the Component Catalog component since they shared
      the same internal number. This has been fixed.

    * Fix to a bug in handling the 'Phase' attribute input for components.


 Other
 =====

    * API: Support for automatic unboxing of any tekla link types
        - Improves compability with scripting/API tools like Speckle or ghPython.

    * UI: Removed prefix numbers from panel headings.



.======================================================.
| Grasshopper-Tekla Structures Link v1.4 Release Notes |
:======================================================:


    * New "Beam Rotation" component that lets you calculate the needed rotation value for a Beam or Column to
      align with a desired Up-vector.
        - You can plug the output value into the Rotation input of a Position component.
        - If a plane is provided as the Up-vector, the plane's normal will be used as expected.

    * Increased the number of control points that can be created when inserting slabs, plates or polybeams.
        - The default limit is 99 points.
        - The limit can be increased up to 999 in Tekla 2017i+, however this might make the model/updates slower.
        - To modify the limit of any "Slab", "Plate" or "Beam" component, right-click the component icon/name and
          change the "Max Control Points" digit scroller value.

    * "Create Tekla Points" component defaults to Beam type point when added.

    * Added shortcuts to default rotations (Front-Top-Back-Below) to the context menu of the "Rotation" input of
      the "Position" component.

    * Automatically generated shape names are prefixed with an underscore.
        - This means they stand out better in the Shape Catalog.
        - The command "Remove unused shapes" (on the Tekla menu in Grasshopper) will only search through and
          remove these shapes.
        - When running the Grasshopper scripts with this version, any previously added shapes will remain in the
          Shape Catalog, and a new shape with the underscore prefix will be created. New and updated items will
          thereafter use the shape with the new shape name.

    * Identical items can be inserted from two different components (previously there was an error message from
      Tekla when you tried this).
        - When creating an item there's a check if an identical shape already exists in the Shape Catalog, and in
          that case the existing shape will be used for the item.
        - If there are several components that create identical items (thus sharing the shape name), the command
          "Bake to Tekla" might not work for that shape.

    * Fixed issues that sometimes appeared when multiple components were solving at once (e.g. some geometry was
      not properly updated).



.======================================================.
| Grasshopper-Tekla Structures Link v1.3 Release Notes |
:======================================================:


New components
--------------

    * New "Create Shape" component that creates or modifies a Tekla shape and adds it to the Shape Catalog.
    
    * New "Get Report Property" component that gets report properties from any model object.


Tekla Menu
----------

    * New menu command "Delete Unused Shapes" that deletes all shape profiles that are not used by any item from
      the component catalog in the Tekla Model.
      - Having a lot (100s or 1000s) of unused shapes can slow down the Tekla model considerably. This is a way
        to remove left-over shapes that can pile up when generating items from Grasshopper. 
      Note: This also removes unused non-Grasshopper generated shapes.


UI updates
----------

    * Added command "Recompute" to the context menu of relevant Tekla components.
      - This is similar to double-clicking the component.

    * A spinner icon shows up next to the Tekla menu whenever there are Tekla components solving

    * Input fields of the Catalog components receive focus when the dialogs open.


General updates for components
------------------------------

    * The output of the part creating components is not flattened any more (so easier to use it downstreams).
      - For this to work properly, use lines or curves to define the geometry of beams and slabs/plates (rather
        than points).

    * Fix to bug that meant the objects created in Tekla sometimes weren't updated to the final state when
      modifying the parameters using sliders.


Component updates
-----------------

    * Tekla Point: Referenced Tekla Points are displayed in Rhino.

    * Tekla Point: A Tekla Point parameter can automatically be used at plane inputs.

    * Beam: Create closed polybeams from closed input curves. The seam point will be automatically moved in case
        it's at a corner.

    * Rebar Group: Rebar groups can be created along curved ranges.
      - If a curve is provided as the Range input, and only one curve is defined for the Shape input (or the input
        is grafted), the shape curve will be copied along the range and the group type will be tapered.
      - If the range input is a circle or arc, the rebar group type will be tapered curved.

    * Component: The Class field of a Connection or a Detail can be updated by using it's backing attribute
        "group_no" in attribute files or direct input.

    * Component: The main part of Details and Seams can be changed without manually removing the objects in Tekla.

    * Convert To Mesh: Fix to bug when reading the mesh from a Tekla solid.



.======================================================.
| Grasshopper-Tekla Structures Link v1.2 Release Notes |
:======================================================:


UI Changes
----------

    * Tekla Main Menu added to Grasshopper with commands to enable/disable all Tekla components, Select all Tekla
        objects etc.

    * Tekla Brep type name shown as Item and Base Component shown as Tekla Component.

    * Tooltips added for context menu commands.


New components
--------------

    * New Create Profile component that creates a fixed Tekla profile from a curve/outline and adds it to the
      Tekla Profile catalog.
      - By default, the profile origin is the center of the outline bounding box. Optionally you can provide your
        own origin point or plane (for controlling the profile rotation).
      Note: This component is fairly slow as it triggers all kinds of macros in Tekla Structures, and is thus not
        suitable for continous updating with e.g. a slider. A Data Dam component can be used at the input to
        control when the component/profile gets updated.

    * New Get UDA Value component that can be used to read the value of any UDA of any model object.
      - If used on a Tekla component, it will return attribute values from the component instead.


Updated components
------------------

    * Improved Item components:
      - [Rhino 6 only] Some closed breps in Grasshopper that previously failed to convert to closed meshes for
        transfer to Tekla are now automatically repaired by the Item components to create valid closed items.
      - If a Geometry input is provided, any Line input (point or line) will be used to set the origin (or origin
        and axis) of the resulting shape, and the geometry will show up at the same location in Tekla and in Rhino
        (previously any line input would move the geometry in Tekla so that it didn't match the location in Rhino.

    * Improved Plate and Slab components:
      - Contour points are more intelligently applied when converting a Nurbs curve to a Tekla contour, to
        minimize the deviation from the actual curve especially around corners and avoid unneccessary points on
        straight edges.

    * Improved Extrude Beams component:
      - The component will create a fitting between the first and last beam segment if the start and end points
        are the same.
      - The default class of extruded beams is now 1 to avoid transparent color.

    * Updated Deconstruct components:
      - Some outputs (Attributes, Position, Numbering, Deforming, Type) will only be calulated in case they are
        connected to another component (can be a Panel). This is to speed up computiation by avoiding extraction
        of unnecessary information.
      - Once the outputs have been connected, double-click the parent Deconstruct component to re-run it and
        calculate the values.
      Note: This means you can't preview output values by hovering the output, unless it's connected to something.

    * Updated Profile Contour component:
      - If no Plane input is given, the profile will show up at the origo as before, but with the global Y-axis as
        its up-direction (previously up was X-axis). This is to align it with the Create profile component.
      - The old component is deprecated but works as previously in projects where it's already in use.

    * Rebar Components that have the option "Remove while inputs are being modified" enabled, will have their
        objects removed from Tekla if the Shape input is invalid.

    * Tekla Input and Floating Parameters (i.e. all Tekla Model Object, Tekla Point, Position, ComponentInput
        params) accept direct input from objects that are Tekla API types.
      - Useful when creating scripting components that output Tekla objects which should then interact with the
        Tekla link components (i.e. no need to create your own Goo types for these Tekla types any more).


Fixes
-----

    * Fix to some components disappearing when a definition is opened without a connection to Tekla Structures.

    * Fix to Index Out of Range error that sometimes appeared for the Rebar Group component.

    * Fix to issue where some attributes were bleeding between Tekla objects.
      - When extracting attribute information from a Tekla part and using that info as input for creating new
        parts, some attributes would stay linked to the original part attributes even outside of Grasshopper.

    * Fix to tolerance issue when converting curves to e.g. polybeams when using large units in Rhino.



.======================================================.
| Grasshopper-Tekla Structures Link v1.1 Release Notes |
:======================================================:


* New components for referencing and deconstructing Tekla objects
-----------------------------------------------------------------

      * New Param components (as floating params) to reference objects from Tekla Structures into Grasshopper.
        - Can be used instead of the old Get components (these are now deprecated).

      * New Deconstruct components to extract model object attributes.
        - Can be used instead of and extends the old Get components (these are now deprecated).

      * New Expand attributes components to browse Part, Position, Numbering and Deforming Attributes that are
        extracted with the Deconstruct components.

      * New Expand UDA component that can be used to expand UDA strings that are extracted from parts.


* Other new components
----------------------

      * New Construct UDA component that can be used to construct UDA input strings for the Part Attributes and
        Rebar Attributes components.
        - Can be used to construct Attributes input for the Component component as well.

      * New Convert to Mesh component for creating a Grasshopper mesh from a Tekla object.
        - This is much faster than the Convert to Brep component, but occasionally might be missing some faces if
          there are holes in the object.


* Improved Item components
--------------------------

      * Item components have a right-click menu item to set the Meshing Parameters as Minimal, Coarse or Smooth.
        - Previously Coarse was always used.
        - This will enable faster updates when Minimal is used and finer details when Smooth is used.
        Note: This is not meant to fix problems due to "bad" breps, you still need to take care of those yourself.

      * Generated shape names are shorter (23 chars + numerical suffix) to prevent some reported errors with long
        shape names.
        - On update, any old shapes will remain in the Shape Catalog and a new shape with the shorter name will be
          created.
        - New and updated items will thereafter use the shape with the new shape name.

      * Default cast unit type for items is CAST_IN_PLACE.

      * A Box can be used as input for the Item components.


* Improved Profile Contour component
------------------------------------

      * Profile Contour component now has an input for a Plane or a Curve.
        - The profile will be projected onto the plane.
        - In case of a curve, the plane is the plane perpendicular to the start point of the curve.

      * The seam point of the profile contour will not depend on the profile orientation any more.
        - It's always the point farthest away in the y- direction of the local profile coord system.
        - Note that this might be at a different vertex than if using the old Profile Contour component.

      * The Default At Depth position of the Profile Contour component is now Behind.

      * The old Profile Contour component will continue to work in definitions where it's already used.


* Various other improvements
----------------------------

      * Tekla Tab renamed to show target Tekla version for quick version verification.

      * More descriptive texts when hovering outputs in Grasshopper.

      * Updated icons for catalogs.

      * Catalogs open next to the cursor (no more off-screen dialogs).

      * Grasshopper preview for Point, Beam and Plate type objects (as reference lines).

      * Rebar Groups don't need a range input if they are tapered.

      * Enum inputs accept text or numbers.

      * Default Depth position for panels created with the Panel component is Front.

      * Fix to bug with Spirit Level fittings for the Extrude Beams component.

      * Fix to bug where Reinforcement start number couldn't be set if the prefix was set.



.======================================================.
| Grasshopper-Tekla Structures Link v1.0 Release Notes |
:======================================================:


* Components to insert reinforcement
------------------------------------
	New Create Single Bar component for creating Single Bars.

	New Create Rebar Group component for creating Rebar Groups.

	New Rebar Catalog, Attributes, Hook, Hooks, Cover and Group components for setting rebar attributes.


* Support for Imperial units
----------------------------
	The Tekla components will use the units of he currently open Rhino document.
	  Note: Referenced or internalized Rhino/Grassshopper point and geometry values won't use the new scale if
	  the Rhino document changes, however points picked in Tekla will adapt. Keep in mind if reusing a script
	  from a different using system. E.g example scripts are created using metric (mm) units, so this means the
	  slider values etc might need to be adjusted if viewed with imperial units.


* Component component improvements
----------------------------------
	The Phase can be set for Components from the attributes input (like other attributes), using the "Phase"
	  keyword and an integer.

	Attribute input can contain prefixes (that will be removed), which means that input can be copy-pasted
	  directly from attribute files. E.g. "macro_attributes.class_ref 14" is interpreted as "class_ref 14".
	  Won't work for components that store the attributes in xml format.


* Catalog components improvements
--------------------------------
	Catalog components show the currently selected item beneath the component in the UI.

	New right-click menu item "Pick from catalog..." for catalog components (executes the same command as
	  double-clicking the component).


* Misc smaller improvements, including
--------------------------------------
	The Grid component creates several grids if the input is a tree.
	  Note: You might need to flatten the input for the Grid component in old definitions.

	The Create Beam component removes the old beam when the input changes from a straight line to a curve (i.e.
	  beam to polybeam) or vice versa.
	  Note: This will not restore the guid of the beam if changing the input from a line to a curve and back.

	Fittings created by the Extrude Beams component get a better angle when the segments have different length.

	UDA input can contain prefixes, which means that input can be copy-pasted directly from attribute files.
	  E.g. 'beam_attributes.comment "this is a beam"' is interpreted as 'comment "this is a beam"'.


.======================================================.
| Grasshopper-Tekla Structures Link v0.9 Release Notes |
:======================================================:

This release improves responsiveness especially when working with Tekla components/connections.
0.9.1 takes care of a bug that prevented some connections from being re-inserted on input modifications.


* When using the "Run in background" mode (i.e. the default), the Tekla objects that the Grasshopper components
    insert or modify in the background will now automatically appear at the component output when they are ready.
  The component icon is changed to a spinner while the objects are being processed in Tekla.
  This allows the Grasshopper UI to remain responsive while outputs can still be used downstream for inserting e.g. 
    connections.
  Beneficial especially if used with the new "Remove" option for the Component component (see below).

* Faster interruption in Tekla when inputs are changing.
  This allows you to quicker see partial results on screen when modifying e.g. a slider.

* New right-click option "Remove while inputs are being modified" for the Component component. This mode means the
    inserted components in Tekla are removed while part and point inputs are being modified, to allow for quicker 
    updates of the model.
  Note: In this mode, the components will get new GUIDs after each input modification.
  This option is checked by default on newly inserted components.

* Resolved Illegal Z-direction error in Tekla preventing some connections from being inserted.



.======================================================.
| Grasshopper-Tekla Structures Link v0.8 Release Notes |
:======================================================:


* New Bent Plate component (Tekla Structures 2017 or newer).
  Behaves like the "Create bent plates using faces" command in Tekla Structures.

* Possibility to create points as native Tekla points (control points) with the Create Tekla Point component.
  !Note: You might need to re-insert any Tekla Point components to remove potential Parameter Index errors.

* The Get Point component shows the picked point in Tekla (as a control point) as well as in Rhino.

* Improvements in the robustness when inserting and modifying components.



.======================================================.
| Grasshopper-Tekla Structures Link v0.7 Release Notes |
:======================================================:

!Note: If using Tekla Structures 2017 or 2017i, this update requires at least 2017 SP5 or 2017i SP1.


* New Convert to Brep component that renders any Tekla model object geometry as Breps in Rhino.
    Note: The boundary output of the Get Plate component is now a polyline instead of a Brep.

* New Profile Contour component that can be used to extract the outline and holes of a profile from the
  profile catalog in Tekla.

* New Get Item, Get Connection and Get Model Object components to reference objects from Tekla structures.

* Internal lines of generated items are now hidden in the model view and in the drawings.

* The Plane Cut and Fitting components react correctly to changes in the input part.



.======================================================.
| Grasshopper-Tekla Structures Link v0.6 Release Notes |
:======================================================:

!Note: This update might generate some "Input parameter chunk is missing. Archive is corrupt."-messages when
  opening an old definition. These can be ignored and will disappear when you've saved the definition again.


* New Pad Footing and Strip Footing components.

* New Deforming component that can be used to set start and end offsets and angles for beams.
	
* Non-solid breps and meshes can be inserted as surfaces with the Create Item components.

* Improvements when transferring solids with the Create Item components.

* Default detail type is now End detail and default direction is Auto (can be changed with the zsuunta attribute)

* The detail type (end/intermediate/reverse) can be set with the detail_type attribute.



.======================================================.
| Grasshopper-Tekla Structures Link v0.5 Release Notes |
:======================================================:


* Position attributes can be set for Custom Parts (by using text attributes as they are used in the attribute file)

* Negative decimal values can be used for attributes/UDA:s

* Single points can be used as input for the componentInput component



.======================================================.
| Grasshopper-Tekla Structures Link v0.4 Release Notes |
:======================================================:


* Baking of items works better (shape of baked object is saved to shape catalog).

* Up direction attribute (zsuunta) can be set for components.

* Icons added for inputs.



.======================================================.
| Grasshopper-Tekla Structures Link v0.3 Release Notes |
:======================================================:


* New Item componens (Tekla Structures 2017 only)
-------------------------------------------------
	For creating steel and concrete items, thus allowing you to transfer any
	  arbitary geometry from Rhino.
	Not possible to release for previous Tekla versions


* New Plane Cut component
-------------------------
	For cutting a part with a plane.	


* New Part Cut component
------------------------
	For cutting a part with another part.


* New Fitting component
-----------------------
	For fitting a part end.


* Cut the link between the component and the part
-------------------------------------------------
	Added right-click option to "bake" the part to tekla. This means that
	  the link between the component and the part is cut and a copy of the
	  part is manipulated upon futher modifications.


* Phase attribute
-----------------
	[Breaking Change] Added Phase (number) to part attributes.


* Notable bugfixes
------------------
	Orientation of plates and slabs automatically adjusted to global Z
	  direction.
	
	Direct modification of generated plates and slabs fixed (previously part
	  DM wasn't working if start and end points were similar).



.======================================================.
| Grasshopper-Tekla Structures Link v0.2 Release Notes |
:======================================================:


* New Component component
-------------------------
	For inserting connections, details, plugins etc.


* New Component Catalog component
---------------------------------
	For picking the component to insert from the Tekla Component Catalog.


* New Component Input component
-------------------------------
	For creating custom plugin input.


* Part Attributes component updates
-----------------------------------
	[Breaking change] The UDAs list of strings input is changed to a UDA
	  single string item input.
		Now, if using a list of strings for the UDA input, the component 
		  will assign them to different parts. To set multiple UDAs for 		 
		  one item, you can still provide them in a single text input, 
		  separated by newlines.
		You need to delete and re-insert any inserted Part Attributes 
		  components to take the updated behavior into use.
	[Breaking change] Updated UDA syntax to match what we have in different 
	  inp files. See the documentation or the tooltips at the input for the 
	  new syntax.


* Object-creating components updates
------------------------------------
	Forcing the components to re-run by double-clicking the icon preserves 
	  existing GUIDs. I.e. the operation doesn't delete and replace all the 
	  generated members any more, just recreates any deleted ones and resets 
	  the rest.


* Input components updates
--------------------------
	Now works with trees internally instead of lists. Otherwise they might 
	  lose track of the input objects when using tree inputs.
	[Breaking change] Outputs the model object in addition to the other 
	  info. You need to re-insert the components to update the outputs.


* Get Plate Component updates
-----------------------------
	fix to situations where it didn't read the plate.


* Point component updates
-------------------------
	Faster removing of points when the component is deleted.
